package util;

import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

/**
 * Contêm diversos métodos que podem ser implementados em qualquer programa. <br/><br/> São métodos para
 * formatação, conversão, exibição de mensagens, entre outros.
 *
 * @author camilo
 */
public class Util {

  /**
   *
   */
  public SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

  /**
   *
   * @param data
   * @return
   */
  public String formatData(Date data) {
    String dataFormatada = sdf.format(data);
    return dataFormatada;
  }

  /**
   *
   * @param data
   * @return
   * @throws ParseException
   */
  public Date formatDataSToD(String data) throws ParseException {
    return sdf.parse(data);
  }

  /**
   *
   * @param data
   * @return
   * @throws ParseException
   */
  public Date formatData(String data) throws ParseException {
    SimpleDateFormat sdtf = new SimpleDateFormat("yyyy-MM-dd");
    Date df = sdtf.parse(data);
    return df;
  }

  /**
   * Formata número (float) com casas decimais. <br/> <b>Ex:</b> "0,00"
   *
   * @param num Número do tipo <u>Float</u>
   * @return Número (String) com casas decimais separadas por ponto
   */
  public String formatNumSql(Float num) {
    DecimalFormat numFormat = new DecimalFormat("0.00");//cria novo objeto
    String numero = numFormat.format(num);//faz a formatação
    return numero.replaceAll(",", ".");//substitui vírgula por ponto para compatibilidade de conversão
  }

  /**
   * Seleciona o conteúdo de um JTextField
   *
   * @param jtf Objeto JTextField
   */
  public void selJtf(JTextField jtf) {
    jtf.requestFocus();
    //    Seleciona o código de barras digitado
    jtf.setSelectionStart(0);
    jtf.setSelectionEnd(Integer.SIZE);
  }

  /**
   * Aciona um JOptionPane configurado para exibir uma mensagem de erro
   *
   * @param e Objeto exception
   * @param m Mensagem adicional. Se não houver, inserir string vazia
   */
  public static void msgErro(Exception e, String m) {
    JOptionPane.showMessageDialog(null, m + "\n\n" + e.getMessage(),
            "Não é possível continuar!", JOptionPane.ERROR_MESSAGE);
  }

  /**
   * Aciona um JOptionPane configurado para exibir uma mensagem de erro
   *
   * @param m Mensagem adicional. Se não houver, inserir string vazia
   */
  public static void msgErro(String m) {
    JOptionPane.showMessageDialog(null, m, "Não é possível continuar!", JOptionPane.ERROR_MESSAGE);
  }

  /**
   * Aciona um JOptionPane configurado para exibir uma mensagem de advertência
   *
   * @param e Objeto exception
   * @param m Mensagem adicional. Se não houver, inserir string vazia
   */
  public static void msgAdv(Exception e, String m) {
    JOptionPane.showMessageDialog(null, m + "\n\n" + e.getMessage(),
            "Atenção!", JOptionPane.WARNING_MESSAGE);
  }

  /**
   * Aciona um JOptionPane configurado para exibir uma mensagem de advertência
   *
   * @param m Mensagem adicional. Se não houver, inserir string vazia
   */
  public static void msgAdv(String m) {
    JOptionPane.showMessageDialog(null, m, "Atenção!", JOptionPane.WARNING_MESSAGE);
  }

  /**
   * Aciona um JOptionPane configurado para exibir uma informação
   *
   * @param e Objeto exception
   * @param m Mensagem adicional. Se não houver, inserir string vazia
   */
  public static void msgInfo(Exception e, String m) {
    JOptionPane.showMessageDialog(null, m + "\n\n" + e.getMessage(),
            "", JOptionPane.INFORMATION_MESSAGE);
  }

  /**
   * Aciona um JOptionPane configurado para exibir uma informação
   *
   * @param m Mensagem adicional. Se não houver, inserir string vazia
   */
  public static void msgInfo(String m) {
    JOptionPane.showMessageDialog(null, m, "", JOptionPane.INFORMATION_MESSAGE);
  }

  /**
   * Aciona um JOptionPane configurado para exibir uma mensagem
   *
   * @param m Mensagem adicional. Se não houver, inserir string vazia
   */
  public static void msg(String m) {
    JOptionPane.showMessageDialog(null, m, "", JOptionPane.PLAIN_MESSAGE);
  }

  /**
   * Aciona um JOptionPane configurado para exibir uma mensagem.
   *
   * @param e Objeto exception
   * @param m Mensagem adicional. Se não houver, inserir string vazia
   */
  public static void msg(Exception e, String m) {
    JOptionPane.showMessageDialog(null, m + "\n\n" + e.getMessage(),
            "", JOptionPane.PLAIN_MESSAGE);
  }
}
